﻿B4J=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=9.8
@EndOfDesignText@

Sub Class_Globals
	Private xlrDict() As String=Array As String("大安","留连","速喜","赤口","小吉","空亡")
	Private jo As JavaObject
	Private joLunar As JavaObject
	Private dhDaan As String=$"·大安事事昌，求财在坤方，失物去不远，宅舍保安康，行人身未动，病者主无妨。将军回田野，仔细与推详，丢失在附近，可能西南向，安居得吉日，不可动身祥。办事别出屋，求借邀自房，得病凶化吉，久疾得安康，寻人知音信，可能归村庄。口舌能消散，远行要提防，交易别出村，离屯细推详，求财有八分，得全不出房。
·大安加留连，办事不周全，失物西北去，婚姻晚几天。
·大安加速喜，事事自己起，失物当日见，婚姻自己提。
·大安加赤口，办事不顺手，失物不用找，婚姻两分手。
·大安加小吉，事事从己及，失物不出门，婚姻成就地。
·大安加空亡，病人要上床，失物无踪影，事事不顺情。"$
	Private dhLqlm As String=$"·留连加大安，办事两分张，婚姻有喜事，先苦后来甜。
·留连事未当，求事日莫光，凡事只宜缓，去者未回向，失物南方去，急急行便访。紧记防口舌，人口且平祥，丢失难寻找，窃者又转场，出行定不归，久去拖延长。办事不果断，牵连又返往，求借不易成，被求而彷徨，此日患疾病，几天不复康。找人迷雾中，迷迷又恍惚，口舌继续有，拖拉又伸长，女方嫁吉日，求财六分量。
·留连加速喜，事事由自己，婚姻有成意，失物三天里。
·留连加赤口，病者死人口，失物准丢失，婚姻两分手。
·留连加小吉，事事不用提，失物东南去，病者出人(口)齐。
·留连加空亡，病人准死亡，失物不见面，婚姻两分张。"$
	Private dhSuxi As String=$"·速喜加大安，事事都平安，姻姻成全了，占病都相安。
·速喜加留连，婚姻不可言，失物无信息，病人有仙缘。
·速喜喜临乡，求财往南方，失物申午未，逢人路寻详，官事有福德，病者无大伤。六畜田稼庆，行人有音向，丢失得音信，微乐在面上，出行遇吉利，小喜而顺当。办事如逢春，吉利又荣光，小量可求借，大事难全强，久病见小愈，得病速回康，寻人得知见，口舌见消亡，交易可得成，但不太久长，求财有十分，吉时得顺当。
·速喜加赤口，自己往外走，失物往正北，婚姻得勤走。
·速喜加小吉，婚姻有人提，病人当天好，失物在家里。
·速喜加空亡，婚姻有分张，病者积极治，失物不久见。"$
	Private dhIikz As String=$"·赤口加大安，办事险和难，失物东北找，婚姻指定难。
·赤口加留连，办事有困难，行人在外走，失物不回还。
·赤口加速喜，婚姻在自己，失物有着落，办事官事起。
·赤口主口伤，官事且紧防，失物急去找，行人有惊慌，鸡犬多作怪，病者上西方。更须防咒咀，恐怕染瘟殃，找物犯谎口，寻问无音向，出门千口怨，言谈万骂伤。办事犯口舌，难成有阻挡，求借不全顺，闭口无事张，得病千口猜，求医还无妨。寻人得凶音，人心不安详，口舌犯最重，交易口舌防，求财只四分，逢吉才成当。
·赤口加小吉，办事自己提，婚姻不能成，失物无信息。
·赤口加空亡，无病也上床，失物不用找，婚姻不能成。"$
	Private dhXnji As String=$"·小吉加大安，事事两周全，婚姻当日定，失物自己损。
·小吉加留连，事事有反还，婚姻有人破，失物上西南。
·小吉加速喜，事事从头起，婚姻能成就，失物在院里。
·小吉加赤口，办事往外走，婚姻有难处，失物丢了手。
·小吉最吉昌，路上好商量，阴人（母性）来报喜，失物在坤方（西南），行人立刻至，交易甚是强。凡事皆合好，病者保安康，大吉又大顺，万事如意详，出行可得喜，千里吉安详。诸事可心顺，有忧皆消光，求借自来助，众友愿相帮，重病莫要愁，久病得安康。不见得相见，不打自归庄，千人称赞君，无限上荣光，交易成兴隆，十二分财量.
·小吉加空亡，病人不妥当，失物正东找，婚姻再想想。"$
	Private dhKswh As String=$"·空亡加大安，事事不周全，婚姻从和好，失物反复间。
·空亡加留连，办事处处难，婚姻重新定，失物永不还。
·空亡加速喜，事事怨自己，婚姻有一定，失物在家里。
·空亡加赤口，办事官非有，婚姻难定准，失物往远走。
·空亡加小吉，事事有猜疑，婚姻有喜事，失物回家里。
·空亡事不长，阴人无主张，求财心白费，行人有灾殃，失物永不见，官事有刑伤。病人遇邪鬼，久病添祸殃，失物难找见，找寻空荡荡，出行不吉利，凶多不吉祥。办事凶为多，处处有阻挡，求借不能成，成事化败伤，得病凶多噩，久患雪加霜。寻人无音信，知音变空想，万口都诽骂，小舟遭狂浪，求财有二分，不吉不利亡。"$
	Private dDesc As String=$"·大安：身不动时，五行属木，颜色青色，方位东方。临青龙，凡谋事主一、五、七（寅巳申）。有静止、心安、吉祥之含义。卜到大安，属吉卦，凡事都可以得到安康，但是此为静卦，宜静不宜动。贵人西南，冲犯东方，属四肢。
·留连：人未归时，五行属水，颜色黑色，方位北方，临玄武，凡谋事主二、八、十（卯午子）。有喑味不明，延迟、纠缠、拖延、漫长之含义。卜到留连，属凶卦，代表凡事阻碍、迟滞，此卦更不宜有过大动作，凡事宜守。贵人南方，冲犯北方，属肾胃。
·速喜：人便至时，五行属火，颜色红色方位南方，临朱雀，谋事主三，六，九（辰戌未）。有快速、喜庆、吉利之含义。指时机已到。卜到速喜为吉卦，代表凡事皆有喜讯，而且很快就会到来。贵人西南，冲犯南方，属心脑。
·赤口：官事凶时，五行属金，颜色白色，方位西方，临白虎，谋事主四、七，十。有不吉、惊恐、凶险、口舌是非之含义。卜到赤口为凶卦，代表运势多舛，而且诸多纷争亦有口舌之祸。贵人东方，冲犯西方，属肺胃。
·小吉：人来喜时，五行属木，临六合，凡谋事主一、五、七。有和合、吉利之含义。卜到小吉为吉卦，代表凡事皆吉，但是不如大安的安稳也不如速喜快速，而是介于两者中间。贵人西南，冲犯东方，属肝肠。
·空亡：音信稀时，五行属土，颜色黄色，方位中央；临勾陈。谋事主三、六、九（辰未丑）。有不吉、无结果、忧虑之含义。卜到空亡为凶卦，代表凡事秽暗不明，内心不安，运途起伏。贵人北方，冲犯厝（阴阳宅）地，属脾脑。"$
	
	Private descTmqi As String=$"大安阴晴日，清风送爽杨柳枝。
留连雨绵绵，旱苗喜雨在禾田。
速喜霓虹现，艳阳高照在人间。
赤口冷如刀，雷雨霜雪兼冰雹。
小吉星月稀，阴阳天里阴阳期。
空亡雾茫茫，不见日月海天长。"$
	Private descXywu As String=$"失物在东方，衣裳掉在草丛中，禽畜迷路林中睡，不过多天送回来，小孩走路得安稳，也有贵人保安康。
失物寻北方，衣物禽畜在水边，鸡儿鸭子水中睡，牛马已经绳子牵，急需焚香来禀告，免得六公再要钱，女人保藏此失物，她见便是报君子。
失物在眼前，劝君望过火炉边，不见请君南方找，一定归你到身边，漏财瘟神遮闭眼，留得久看发疯癫。
失物西方寻，定是有人来收藏，寻找之时碰见人，劝君免问小心防，为善殉寻告你知，为恶咒骂无人讲。
失物寻东北，屋前柴草遮着眼，牛马已在干草睡，衣物次天可寻回，小孩迷路星石救，护送回家在次天。
失物已失踪，六畜将死泥土中，或在贪心人手中，寻紧急时见尸踪，衣物失去已落空，劝君安心免头痛。"$
End Sub

'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
	jo=jo.InitializeStatic("com.nlf.calendar.Lunar")	
	Dim djo As JavaObject
	djo=djo.InitializeNewInstance("java.util.Date",Array())
	joLunar=jo.RunMethod("fromDate",Array(djo))
End Sub
Public Sub getCurrentDate As JavaObject
	Dim djo As JavaObject
	djo=djo.InitializeNewInstance("java.util.Date",Array())
	Return djo
End Sub
'传入date类型的javaobject
Public Sub Initialize2(djo As JavaObject)
	joLunar=jo.RunMethod("fromDate",Array(djo))
End Sub
Public Sub getLunarMonth As Int
	Return joLunar.RunMethod("getMonth",Array())
End Sub
Public Sub getLunarDay As Int
	Return joLunar.RunMethod("getDay",Array())
End Sub
Public Sub getGanzhiYear As String
	Return joLunar.RunMethod("getYearInGanZhi",Array())
End Sub
Public Sub getGanzhiMonth As String
	Return joLunar.RunMethod("getMonthInGanZhi",Array())
End Sub
Public Sub getGanzhiDay As String
	Return joLunar.RunMethod("getDayInGanZhi",Array())
End Sub
Public Sub getDayPositionXi As String
	Return joLunar.RunMethod("getDayPositionXi",Array())
End Sub
Public Sub execMethod(m As String) As String
	Return joLunar.RunMethod(m,Array())
End Sub
Public Sub calc As String
	Dim month As Int=getLunarMonth
	Dim day As Int=getLunarDay
	Dim sum As Int=month+day-1
	Dim today_i As Int=(sum-1) Mod 6
	Dim month_i As Int=(month-1) Mod 6
	Dim today_f As String=xlrDict(today_i)
	Dim month_f As String=xlrDict(month_i)
	Dim lstTime As List
	lstTime.Initialize
	For i =0 To 11
		Dim num As Int=(sum-1+i) Mod 6
		lstTime.Add(num)
	Next
	
	Dim sb As StringBuilder
	sb.Initialize
	Dim hstr As String=execMethod("getTimeInGanZhi").SubString(1)
	sb.Append("农历:"& execMethod("getMonthInChinese") &"月 "&execMethod("getDayInChinese")&CRLF)
	sb.Append("干支:"&getGanzhiYear &"年 "&getGanzhiMonth&"月 "&getGanzhiDay&"日 "&hstr&"时 "&CRLF)
	sb.Append(month_f&"月 "&today_f&"日 ")
	Dim h As Int
	Dim hour_f As String
	Dim sc() As String=Array As String("子时 23:00-00:59","丑时 01:00-02:59","寅时 03:00-04:59","卯时 05:00-06:59","辰时 07:00-08:59","巳时 09:00-10:59","午时 11:00-12:59","未时 13:00-14:59","申时 15:00-16:59","酉时 17:00-18:59","戌时 19:00-20:59","亥时 21:00-22:59")
	For k=0 To sc.Length-1
		If sc(k).IndexOf(hstr)>-1 Then
			h=k
		End If
	Next
	Dim ii As Int=0'换行轮循
	For j=0 To 12
		Dim st As String=sc(j Mod sc.Length)
		If j>=h And j<(h+4) Then
			If j==h Then
				hour_f=xlrDict(lstTime.Get(j Mod lstTime.Size))
				sb.Append(xlrDict(lstTime.Get(j Mod lstTime.Size))&"时"&CRLF)
			Else
				ii=ii+1
				sb.Append(xlrDict(lstTime.Get(j Mod lstTime.Size))&" "&st&" ")
				If ii>1 And (ii Mod 2)==0 Then
					sb.Append(CRLF)
				End If
			End If
			
		End If
	Next
	sb.Append(CRLF&getDescTxt(today_f,hour_f,False))
	Return sb.ToString
End Sub

Public Sub calcSimple As String
	Dim month As Int=getLunarMonth
	Dim day As Int=getLunarDay
	Dim sum As Int=month+day-1
	Dim today_i As Int=(sum-1) Mod 6
	Dim month_i As Int=(month-1) Mod 6
	Dim today_f As String=xlrDict(today_i)
	Dim month_f As String=xlrDict(month_i)
	Dim lstTime As List
	lstTime.Initialize
	For i =0 To 11
		Dim num As Int=(sum-1+i) Mod 6
		lstTime.Add(num)
	Next
	
	Dim sb As StringBuilder
	sb.Initialize
	Dim hstr As String=execMethod("getTimeInGanZhi").SubString(1)
'	sb.Append(getGanzhiYear &"年 "&getGanzhiMonth&"月 "&getGanzhiDay&"日 "&hstr&"时 ")
	sb.Append("农历:"& execMethod("getMonthInChinese") &"月 "&execMethod("getDayInChinese")&" ")
	sb.Append(month_f&"月 "&today_f&"日 ")
	Dim hour_f As String
	Dim h As Int
	Dim sc() As String=Array As String("子时 23:00-00:59","丑时 01:00-02:59","寅时 03:00-04:59","卯时 05:00-06:59","辰时 07:00-08:59","巳时 09:00-10:59","午时 11:00-12:59","未时 13:00-14:59","申时 15:00-16:59","酉时 17:00-18:59","戌时 19:00-20:59","亥时 21:00-22:59")
	For k=0 To sc.Length-1
		If sc(k).IndexOf(hstr)>-1 Then
			h=k
		End If
	Next
	Dim ii As Int=0'换行轮循
	For j=0 To 12
		Dim st As String=sc(j Mod sc.Length)
		If j>=h And j<(h+3) Then
			If j==h Then
				hour_f=xlrDict(lstTime.Get(j Mod lstTime.Size))
				sb.Append(xlrDict(lstTime.Get(j Mod lstTime.Size))&"时"&CRLF)
			Else
				ii=ii+1
				sb.Append(xlrDict(lstTime.Get(j Mod lstTime.Size))&" "&st&" ")
				If ii>1 And (ii Mod 2)==0 Then
					sb.Append(CRLF)
				End If
			End If
			
		End If
	Next
	sb.Append(getDescTxt(today_f,hour_f,True))
	Return sb.ToString
End Sub

Public Sub getDescTxt(d As String,h As String,isSimple As Boolean) As String
	Dim sb As StringBuilder
	sb.Initialize
	If isSimple==False Then
		'详细
		sb.Append("===总纲==="&CRLF&dDesc)
		sb.Append(CRLF&"===日加时速断==="&CRLF)
		Dim tmqistr() As String=Regex.Split(CRLF,descTmqi)
		Dim xywustr() As String=Regex.Split(CRLF,descXywu)
		If d==xlrDict(0) Then
			'大安
			sb.Append(dhDaan)
		else if d==xlrDict(1) Then
			'留连
			sb.Append(dhLqlm)
		else if d==xlrDict(2) Then
			'速喜
			sb.Append(dhSuxi)
		else if d==xlrDict(3) Then
			'赤口
			sb.Append(dhIikz)
		else if d==xlrDict(4) Then
			'小吉
			sb.Append(dhXnji)
		else if d==xlrDict(5) Then
			'空亡
			sb.Append(dhKswh)
		End If
		sb.Append(CRLF&"===分项===")
		sb.Append(CRLF&"天气:")
		For hidx=0 To xlrDict.Length-1
			If xlrDict(hidx)==h Then
				sb.Append(tmqistr(hidx))
				sb.Append(CRLF&"寻物:"&xywustr(hidx))
			End If
		Next
		
	Else
		'简单
		Dim nh As Int=findNameIdx(h)
		Dim dhstr As String
		If d==xlrDict(0) Then
			'大安
			dhstr=Regex.Split(CRLF,dhDaan)(nh)
			
		else if d==xlrDict(1) Then
			'留连
			dhstr=Regex.Split(CRLF,dhLqlm)(nh)
		else if d==xlrDict(2) Then
			'速喜
			dhstr=Regex.Split(CRLF,dhSuxi)(nh)
		else if d==xlrDict(3) Then
			'赤口
			dhstr=Regex.Split(CRLF,dhIikz)(nh)
		else if d==xlrDict(4) Then
			'小吉
			dhstr=Regex.Split(CRLF,dhXnji)(nh)
		else if d==xlrDict(5) Then
			'空亡
			dhstr=Regex.Split(CRLF,dhKswh)(nh)
		End If
		Dim dstr As String=Regex.Split(CRLF,dDesc)(nh)
		sb.Append(dstr&CRLF)
		sb.Append(dhstr)
	End If
	
	Return sb.ToString
End Sub
Private Sub findNameIdx(n As String) As Int
	For i =0 To xlrDict.Length-1
		If xlrDict(i)==n Then Return i
	Next
	Return 0
End Sub